package com.wgy.day40SQL.SQL分类;
/*
DQL(Data Query Language) 数据查询语言
                         查询表中所有的记录(数据): select * from 表名
  1.排序查询:
       语法: select * from 表名 order by 子句(排序字段1 排序方式1,排序字段2 排序方式2...)
       排序方式: ASC:升序,默认的
               DESC:降序
        注意:如果有多个排序条件,则当前面的条件值一样的时候,才会判断第二条件.
             select * from stu order by math Asc,English DESC;

  2.聚合函数:将一列数据作为一个整体,进行纵向的计算.(计算某一列的总分,平均分等)
         1.count:结算数据的个数
                  1.一般选择非空的列:主键
                  2.count(*)
             举例: select count(name) from stu;
                  select count(ifnull(age,0)) from stu;
                  SELECT COUNT(*) FROM stu;
         2.max: 计算最大值
                SELECT max(math) FROM stu;
         3.min: 计算最小值
                SELECT MIN(math) FROM stu;
         4.sum:计算和
                SELECT SUM(math) FROM stu;
         5.avg:计算平均值
               SELECT AVG(math) FROM stu;

         注意:聚合函数的计算,排除了null值
         解决方法:1.选择不包含非空的列进行计算
                 2.ifnull 函数

  3.分组查询:
      1.语法: group by 分组字段
      2.注意: 1.分组之后查询的字段:分组字段,聚合函数
             2.where 和 having的区别:
                1.where在分组之前进行限定条件,如果不满足条件,则不参与分组.having在分组之后进行限定,如果不满足结果,则不会被查询出来
                2.where后不可以跟聚合函数,having可以进行聚合函数的判断
             SELECT sex,AVG(math) FROM stu GROUP BY sex;//查按照性别分组,分别查看男.女同学的数学平均分
             SELECT sex,AVG(math), count(id) FROM stu GROUP BY sex;//查按照性别分组,分别查看男.女同学的数学平均分,人数
             SELECT sex,AVG(math),COUNT(id) FROM stu where math > 91 GROUP BY sex;//查按照性别分组,分别查看男.女同学的数学91分以上的同学的平均分,人数
             SELECT sex,AVG(math),COUNT(id) FROM stu WHERE math > 91 GROUP BY sex HAVING COUNT(id)>2;
  4.分页查询:
       1.语法:limit 开始的索引,每页查询的条数;
       2.公式:开始的索引=(当前的页码-1)*每页显示的条数
                  ----每页显示3条记录
             select * from stu limit 0,3; //第一页
             select * from stu limit 3,3; //第二页
             select * from stu limit 6,3; //第三页
        3.limit是一个mysql的分页"方言",其他的数据库不一定通用


*/
public class Demo05DQL_排查顺序和聚合函数和分组查询和分页查询 {
}
